package com.sunwayworld.basemodule.samplemanage.location.service;

import com.alibaba.fastjson.JSONObject;
import com.sunwayworld.basemodule.samplemanage.location.bean.LimsLocationBean;
import com.sunwayworld.basemodule.samplemanage.location.bean.LimsLocationBoardBean;
import com.sunwayworld.basemodule.samplemanage.location.bean.LocationDTO;
import com.sunwayworld.framework.mybatis.mapper.MapperParameter;
import com.sunwayworld.framework.restful.data.RestJsonWrapperBean;
import com.sunwayworld.framework.support.base.service.GenericService;
import com.sunwayworld.framework.support.choosable.service.GenericChoosableService;
import com.sunwayworld.framework.support.selectable.service.GenericSelectableService;
import com.sunwayworld.framework.support.tree.service.GenericTreeService;

import java.util.List;
import java.util.Map;

public interface LimsLocationService extends GenericService<LimsLocationBean, Long>,
        GenericChoosableService<LimsLocationBean, Long>,
        GenericSelectableService<LimsLocationBean, Long>,
        GenericTreeService<LimsLocationBean, Long> {

    void deleteByGroup(String group);

    void saveBoards(RestJsonWrapperBean wrapperBean);

    void removeBoards(RestJsonWrapperBean wrapperBean);

    Boolean appendLocations(RestJsonWrapperBean wrapper);

    LimsLocationBean saveLayer(LimsLocationBean layer);

    Long addBox(List<LimsLocationBean> locationBeans);

    List<LimsLocationBean> editStorage(LimsLocationBean layer);

    List<Map<String,Object>> staticData(String codeCategoryId);

    List<LimsLocationBean> queriesStorage(LimsLocationBean locationBean);

    Long insertStorage(LimsLocationBean locationBean);

    void saveBoards(LimsLocationBoardBean locationBoardBean);

    void removeBoards(LimsLocationBoardBean locationBoardBean);

    void moveBoard(LimsLocationBoardBean locationBoardBean);

    JSONObject delStorage(LimsLocationBean locationBean);

    JSONObject delLayerChild(Long id);

    List<LocationDTO> selectTree(LimsLocationBean locationBean);

    LimsLocationBean save(Long id, LimsLocationBean locationBean);

    Long addLayer(LimsLocationBean locationBean);

    LimsLocationBean editBox(LimsLocationBean locationBean);

    List<LimsLocationBoardBean> selectBoardList();

    JSONObject validatorCode(LimsLocationBean locationBean);

    void updateSecondLevelDesc(List<LimsLocationBean> secondLocationBeans);

    JSONObject selectI18Message();

    Long addArea(List<LimsLocationBean> locationBeans);

    JSONObject newDelStorage(LimsLocationBean locationBean);

    void newSaveBoards(LimsLocationBoardBean locationBoardBean);

    void newRemoveBoards(LimsLocationBoardBean locationBoardBean);

    void newMoveBoard(LimsLocationBoardBean locationBoardBean);

    List<LimsLocationBean> newQueriesStorage(LimsLocationBean locationBean);

    JSONObject validatorAreaCode(LimsLocationBean locationBean);

    void updateColorFlag(String locationNo,String color);

    List<Map<String, Object>> kshStorageSelectable();

    List<LocationDTO> selectTreeData(MapperParameter temp);
}
